package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ManagerService {
    //获取一级分类的集合
    List<BaseCategory1> getCategory1();

    //获取二级分类的集合
    List<BaseCategory2> getCategory2(Long category1Id);

    //获取三级分类的集合
    List<BaseCategory3> getCategory3(Long category2Id);

    //根据分类id获取平台属性
    List<BaseAttrInfo> attrInfoList(Long category1Id, Long category2Id, Long category3Id);

    //添加平台属性
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //根据平台属性ID获取平台属性
    List<BaseAttrValue> getAttrValueList(Long attrId);

    //获取品牌分页列表
    IPage<BaseTrademark> selectPageBaseTrademark(Integer page, Integer limit);

    //删除品牌
    void remove(Long id);

    //添加品牌
    void save(BaseTrademark baseTrademark);

    //根据id获取品牌
    BaseTrademark get(Long id);

    //修改品牌
    void update(BaseTrademark baseTrademark);

    //查询商品分页 根据三级分类id查
    IPage spuPage(Integer page, Integer limit, Long category3Id);

    //获取品牌(平台)属性
    List<BaseTrademark> getTrademarkList();

    //获取销售属性
    List<BaseSaleAttr> baseSaleAttrList();

    //添加spu
    void saveSpuInfo(SpuInfo spuInfo);

    //为了添加SKU 查询spu_image表中spuId对应的所有图片
    List<SpuImage> spuImageList(Long spuId);

    //为了添加SKU 查询spuId对应的销售属性和属性值集合
    List<SpuSaleAttr> spuSaleAttrList(Long spuId);

    //添加SKU
    void saveSkuInfo(SkuInfo skuInfo);

    //分页查询SKU
    IPage skuPage(Integer page, Integer limit);

    //上架
    void onSale(Long skuId);

    //下架
    void cancelSale(Long skuId);

    //根据skuId查询库存表sku_info  通过主键 同时查询图片
    SkuInfo getSkuInfo(Long skuId);

    //一二三级分类 ID名称
    BaseCategoryView getBaseCategoryView(Long category3Id);

    //单独查询价格
    BigDecimal getPrice(Long skuId);

    //查询销售属性及选中
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long spuId, Long skuId);

    //5: 查询组合对应的SKUID 为了销售属性选择 跳转 刷新功能
    Map getSkuValueIdsMap(Long spuId);

    //6: 查询所有分类视图 集合
    List<BaseCategoryView> getBaseCategoryViewList();

    //7: 根据ID获取品牌
    BaseTrademark getBaseTrademark(Long tmId);

    //8: 查询某一款商品的平台属性集合
    List<SkuAttrValue> getSkuAttrValueAndAttrAndAttrValue(Long skuId);
}
